Array collection
Collection เป็นที่สำหรับการเก็บข้อมูล โดยทำหน้าที่สำหรับการเก็บเพิ่ม ลบ และการค้นหาข้อมูล และยังสามารถเก็บข้อมูลอะไรก็ได้ซ้ำกันก็ได้ ส่วนอาร์เรย์ (array) เป็นแถวลำดับ คือเป็นการเก็บข้อมูลใส่ไว้เป็นช่องๆ เริ่มตั้งแต่ช่องแรก ดัชนี (index) แรกเริ่มที่ช่องที่0 ไปถึงช่องของขนาดลบด้วยหนึ่ง (size-1) ลบหนึ่งก็เพราะ สมมติว่าเรากำหนดขนาดอาร์เรย์เป็น 10 แต่มันต้องเริ่มต้นดัชนีที่ชอง 0 เพื่อจะให้ได้ 10 ช่องก็ต้องเป็น 0-9 ดังนั้นแล้ว array collection ก็คือที่เก็บข้อมูลโดยเป็นแถวลำดับ
List
List เป็นรายการ เป็นลักษณะของการเก็บข้อมูลที่มีตัวเลขกำกับข้อมูล ทำให้ข้อมูลมีความเป็นลำดับ มีข้อมูลที่อยู่ก่อนหรืออยู่ข้างหลัง เพราะฉะนั้นเมื่อพูดถึง list จึงต้องมีเมท็อดที่เกี่ยวกับเรื่องของลำดับได้แก่ get และ set โดยเป็นการขอข้อมูลที่อยู่ในลำดับที่ต้องการ และการเปลี่ยนแปรงข้อมูลที่อยู่ในลำดับที่ต้องการ
Arraylist
เป็น array บวกกับ list หรือก็คือเป็นการเก็บข้อมูลเป็นแถวๆแต่เป็นลำดับแบบชัดเจนมีความหมาย มีเลขกำกับ ไม่ใช่แค่เพิ่ม ลบ หา นอกจากนี้อาร์เรย์ลิสต์เป็นที่รู้จักกันว่าเป็นอาร์เรย์ที่ขยายขนาดเองได้
เมท็อดในอาร์เรย์ลิสต์
void add สำหรับเพิ่มข้อมูล
void remove สำหรับลบข้อมูล
ชนิดข้อมูล get สำหรับขอข้อมูลในลำดับเลขที่ต้องการ
void set สำหรับเปลี่ยนข้อมูลในลำดับที่ต้องการ
ชนิดตัวแปร size
indexOf
void ensureCapacity
boolean equal
รูป 2-1
สร้างคลาส ArrayList
สร้างตัวแปรให้กับคลาสเป็น private 2 ตัวได้แก่ data และ size โดย data มีไว้สำหรับเก็บข้อมูลตรง Object[] เป็นชนิดของข้อมูลที่เก็บจะเก็บเป็น int เป็นอะไรก็ได้ และตัวแปร size ไว้สำหรับกำหนดขนาดให้กับอาร์เรย์จึงเป็น int
ในคอนสตรัคเตอร์ของคลาส กำหนดค่าเริ่มต้นให้ data เก็บข้อมูล 1 ตัว คือแค่ 1 ตัวก็พอเพราะว่าอาร์เรย์ลิสต์เป็นอาร์เรย์ที่ขยายขนาดได้ด้วยตัวเอง พอมีข้อมูลตัวถัดไปเข้ามา อาร์เรย์จะขยายขนาดเองไม่ต้องกำหนดพื้นที่ให้เปลือง ตัวแปร size สำหรับเก็บขนาดของอาร์เรย์กำหนดค่าเริ่มต้นเป็น 0
รูป2-2
เมท็อด add ensureCapacity
บรรทัดที่ 39 : สร้าง เมท็อด add รับพารามิเตอร์เป็นชนิดข้อมูลที่จะใส่ข้อมูลเข้ามา
บรรทัดที่ 41 : หากไม่ต้องการให้อาร์เรย์เก็บค่า null ให้ throw exception ออกไป
บรรทัดที่ 42 : สำหรับตรวจสอบขนาดของอาร์เรย์ ด้วยเมท็อด ensureCapacity โดยส่งพารามิเตอร์เป็นขนาด size + 1
บรรทัดที่ 43 : เอา e ใส่เข้าไปที่ตัวสุดท้าย ที่ใส่ที่ตัวสุดท้ายเพราะอาร์เรย์ลิสต์เป็นการเก็บข้อมูลที่ต่อท้ายจากข้อมูลเดิมไปเรื่อยๆ
เมท็อด ensureCapacity
บรรทัดที่ 46 : สร้าง เมท็อด ensureCapacity รับอินพุทเป็นขนาดอาร์เรย์เดิม
บรรทัดที่ 48 : ตรวจว่าเลขที่รับเข้ามามากกว่าจำนวนข้อมูลที่มีอยู่หรือไม่ ถ้าใช่ให้ขยายขนาดอาร์เรย์ คือ capacity เป็น size+1 ก็หมายความว่า ถ้า size มีข้อมูลเต็มทุกช่อง ก็มี data.length จะเท่ากับ size ดังนั้นพอ +1 เข้าไป capacity จะมากกว่า data.length อยู่ 1 ก็หมายความว่าหากข้อมูลเต็มอาร์เรย์ให้เพิ่มขนาดของอาร์เรย์ออกไป
บรรทัดที่ 49 : เพิ่มขนาดโดยให้เอาจำนวนข้อมูลทั้งหมดไปคูณ2 เป็นขนาดของอาร์เรย์ใหม่ เก็บไว้ในตัวแปร s
บรรทัดที่ 50 : สร้างอาร์เรย์ใหม่ขนาด s
บรรทัดที่ 51-52 : วนลูปเอาสิ่งที่อยู่ในอาร์เรย์เดิมไปใส่อาร์เรย์ใหม่
บรรทัดที่ 53 : ให้ data ชี้ข้อมูลเดียวกับที่ arr(อาร์เรย์ใหม่) ชี้อยู่
เมท็อด indexOf(ชนิดตัวแปร ชื่อตัวแปร) สำหรับการหาตำแหน่งของข้อมูล
วนลูปจากตัวแรกถึงตัวสุดท้ายดูว่ามี data ช่องที่ i มีค่าเท่ากับข้อมูลที่รับเข้ามาหรือไม่ ถ้าใช่ให้คืนตำแหน่ง i ออกไปเลย แต่ถ้าในอาร์เรยไม่มีข้อมูลให้คืนค่าเป็น -1 (เพราะอาร์เรย์เริ่มที่ 0 ก็เอาเลขที่น้อยกว่า 0)
เมท็อด contains(ชนิดตัวแปร ชื่อตัวแปร) สำหรับถามว่ามีข้อมูลนั้นในอาร์เรย์หรือไม่ โดยตอบเป็นใช่และไม่เท่านั้น
ก็ให้ดูว่าถ้า หาด้วยเมท็อด indexOf แล้วไม่คืนค่าเป็น -1 ก็ถือว่ามี (เพราะ -1 ของเมท็อด indexOf หมายถึงไม่มีตำแหน่งของข้อมูลนั้น)
รูป2-4
บรรทัดที่ 57 : สร้างเมท็อด remove(ชนิดตัวแปร ชื่อตัวแปร) สำหรับลบข้อมูลที่รับเข้ามา
บรรทัดที่ 59 : สร้างตัวแปร i หาว่ามีตำแหน่งของข้อมูลที่รับเข้ามาอยู่ที่ตำแหน่งไหน
บรรทัดที่ 60 : เงื่อนไขคือต้องมีข้อมูล ก็เรียกเมท็อดสำหรับลบข้อมูลในตำแหน่งนั้น
บรรทัดที่ 63 : สร้างเมท็อด remove(ชนิดตัวแปร ชื่อตัวแปร) สำหรับลขข้อมูลในตำแหน่งนั้นๆ
บรรทัดที่ 65-67 : วนลูปจาก i+1 ถึงตัวสุดท้าย สำหรับการเลื่อนข้อมูลมาไปข้างซ้ายหนึ่งตำแหน่ง ซึ่งตัวแรกที่จะไปทับข้อมูลเก่าคือ ข้อมูลที่ i+1 ไปทับข้อมูล i ที่เราต้องการลบ
บรรทัดที่ 69 : ให้ข้อมูลช่องสุดท้ายว่าง
รูป2-5
บรรทัดที่ 83 : สร้างเมท็อด get รับข้อมูลเป็นดัชนีเข้ามา
บรรทัดที่ 85-87 : หาว่าเลขที่รับเข้ามาเกินขอบเขตของ size หรือไม่ ถ้าเกินให้แจ้งข้อความ error
บรรทัดที่ 89 : ถ้าอยู่ในช่วงให้คืนค่าว่าข้อมูลของดัชนีนั้นคืออะไร (ในโค๊ดให้เก็บข้อมูลเป็นชนิด Object ดังนั้น ต้อง cast ข้อมูลเป็น int ให้เหมือนกับ input)
บรรทัดที่ 92 : สร้างเมท็อด set สำหรับกำหนเข้อมูลในดัชนีนั้นๆ
บรรทัดที่ 93 : ให้ข้อมูล data ช่องที่ i เป็น e
Tag ที่น่าสนใจ: array_list array_collection list arraylist data_structure java programming indexing add_method remove_method get_method set_method ensure_capacity indexof contains
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com